package com.hjj.dsaa.introduction;

/**
 * <p>使用接口类型表示泛型</p>
 *  <ul>
 *      <li>只有实现Comparable接口接口的对象才能够作为Comparable数组元素被传递</li>
 *      <li>如果Comparable数组有两个不相容的独享，那么CompareTo将抛出异常ClassCastException</li>
 *      <li>基本类型不能作为Comparable传递，但是包装类则可以，因为它们实现了Comparable接口</li>
 *  </ul>
 * @author hjj
 * @create 2020-01-11 13:51
 */
public class FindMaxDemo {
    public static Comparable findMax(Comparable[] arr) {
        int maxIndex = 0;
        for (int i = 1; i < arr.length; i++) {
            if (arr[i].compareTo(arr[maxIndex]) > 0) {
                maxIndex = i;
            }
        }
        return arr[maxIndex];
    }

    public static void main(String[] args) {
        String[] st1 = {"Joe", "Bob", "Bill"};
        System.out.println(findMax(st1));
        Integer[] ints = {11, 22, 33, 44};
        System.out.println(findMax(ints));
    }
}
